跳到主要内容

Shell 退出脚本

Shell 中运行的每个命令都使用退出状态码(exit status)告诉 shell 它已经运行完毕。退出状态码是一个 0 ~ 255 的整数值,在命令结束运行时由命令传给 shell。可以捕获这个值并在脚本中使用。

捕获命令返回的状态

Linux 提供了一个专门的变量 $? 来保存上个已执行命令的退出状态码。对于需要进行检查的命令,必须在其运行完毕后立刻查看或使用 $? 变量。它的值会变成由 shell 所执行的最后一条命令的退出状态码。

$ date
Fri 11 Feb 2022 02:27:40 PM CST
$ echo $?
0
$

按照惯例,一个成功结束的命令的退出状态码是 0。如果一个命令结束时有错误,退出状态码就是一个正数值。

$ asdfg
-bash: asdfg: command not found
$ echo $?
127

无效命令会返回一个退出状态码 127。Linux 错误退出状态码没有什么标准可循,但有一些可用的参考。

0 命令成功结束
1 一般性未知错误
2 不适合的 shell 命令
126 命令不可执行
127 没找到命令
128 无效的退出参数
128+x 与 Linux 信号 x 相关的严重错误
130 通过 Ctrl+C 终止的命令
225 正常范围之外的退出状态码

exit 命令

默认情况下,shell 脚本会 以脚本中的最后一个命令的退出状态码退出。可以使用 exit 命令在脚本结束时指定一个退出状态码。

#!/bin/bash
exit 5
$ ./test.sh
$ echo $?
5

References

初识脚本编程